草庐IT

Ruby Regex 舍入尾随零

全部标签

与 sprintf 相关的 C++ 舍入行为一致性

我有一个在Windows/Linux上运行的C++程序。在Windows上,程序是用VisualStudio2012编译的,在Linux上是用GCC编译的。使用sprintf将double转换为字符串时,VisualStudio使用与GCC编译器不同的舍​​入方法来处理并列-即以5结尾的小数。VisualStudio编译器似乎执行roundhalfawayfromzero而GCC做roundeven又名银行家四舍五入。四舍五入是理想的行为。是否可以更改visualstudio/windows中用于sprintf格式字符串的舍入行为?因为我需要使两者之间的舍入行为一致。这是一个小的C++

c++ - 将 y=x*x 舍入到最近的

除法结果四舍五入为prettysimple.但我试图对除法结果进行舍入,以便后续操作给出最佳近似值。最好用一个简单的函数来解释:constinthalfbits=std::numeric_limits::digits/2;unsignedx=foo();//Likelybig.unsignedx_div=x>>halfbits;//Roundeddownunsignedy=x_div*x_div;//Willfitduetodivision.我可以圆x_div通过添加1到最近的.但由于x²不是线性函数,因此y通常没有正确舍入。有没有更简单更准确的方法来计算(x*x)>>(halfbit

c++ - 如何在没有科学计数法或尾随零的情况下将 float 输出到 cout?

在C++中输出没有科学记数法或尾随零的float的最优雅方法是什么?floata=0.000001f;floatb=0.1f;cout 最佳答案 我不确定“最优雅的方式”,但这是一种方式。#include#include#includeusingnamespacestd;stringfix(floatx,intp){ostringstreamstrout;strout你也许可以createyourownI/Omanipulator如果您需要大量此类输出。这可以说更优雅,但实现可能类似。

c++ - 如何正确编写尾随返回类型?

假设我有这个函数模板:templateautoDoSomething(constT1&arg);当然,这个函数需要一个尾随返回类型,考虑到函数的目的,我真的做错了。这个函数应该做的是使用arg,用arg和一个T2对象做一些操作,然后使用的结果该操作作为函数的返回值。显然,DoSomething()的返回类型必须(兼容)与为arg和T2对象完成的操作的返回类型相匹配。再次假设我们让DoSomething()做一些真正的操作,比如乘法。然后我们将像下面的代码一样编写DoSomething():templateautoDoSomething(constT1&arg)->/*trailingr

c++ - 如何进行带有偏差的浮点舍入(总是向上或向下舍入)?

我想用一个偏差来舍入float,要么总是向下要么总是向上。代码中有一个特定点我需要这个,程序的其余部分应该像往常一样四舍五入到最接近的值。例如,我想四舍五入到最接近的1/10的倍数。最接近7/10的float约为0.69999998807,但最接近8/10的float约为0.80000001192。当我四舍五入数字时,这是我得到的两个结果。我宁愿让他们以同样的方式四舍五入。7/10应四舍五入为0.70000004768,8/10应四舍五入为0.80000001192。在这个例子中,我总是四舍五入,但我有一些地方我想总是向下舍入。幸运的是,我只处理这些地方的积极值(value)观。我用来

c++ - 如何使用省略尾随 '\0' 的字符串文字初始化 std::array<char, N>

我有一个文件结构,其中固定长度的字符串没有尾随零。如何将字段初始化为不带尾随零的std::array:#pragmapack(push,1)structData{//Compiles,butithasanundesired'\0':std::arrayundesired_number{"12345"};//Doesnotcompile:std::arraynumber{"12345"};//stripping'\0'};#pragmapack(pop) 最佳答案 制作辅助函数templateconstexprstd::arrayto

c++ - 从 C++14 开始,尾随返回类型语法的合法使用

实际上是否有任何理由再使用以下语法:templateautoaccess(T&t,inti)->decltype(t[i]){returnt[i];}现在我们可以使用:templatedecltype(auto)access(T&t,inti){returnt[i];}尾随返回类型语法现在看起来有点多余? 最佳答案 推导的返回类型对SFINAE不友好。如果t[i],此重载将简单地退出重载集无效:templateautoaccess(T&t,inti)->decltype(t[i]){returnt[i];}而这种重载不会导致硬错误:

c++ - 如何设置浮点值的格式,使其从不使用指数表示法或尾随零?

根据ios_basemanipulators,在格式化没有指数表示法(带十进制数)的float时,我基本上可以在defaultfloat和fixed之间进行选择。但是,我想选择maximumprecision对于许多数字(例如1.),fixed会产生很多尾随零,但要避免使用指数表示法。如果设置为defaultfloat,它在大多数时间看起来是正确的,除非该值真的非常小,但不是0.。在这种情况下,默认表示会自行切换为科学记数法,这会破坏格式化输出的接收方(因为它不知道2.22045e-16是什么意思。那么,我怎样才能既吃馅饼又吃馅饼呢?也就是说,没有不必要的尾随零的非指数表示法。注意:我

c++ - decltype(自动),尾随返回类型和 sfinae : can we mix them?

考虑以下代码:autof()->decltype(auto){/*dowhateveryouwanthere*/}intmain(){f();}推导出返回类型,decltype(auto)用作尾随返回类型。下面的代码是一个稍微修改过的(实际上,sfinae'd)版本:structS{staticvoidf(){}};structT{};templateautof(int)->decltype(U::f(),void()){//dowhateveryouwanthere}templateautof(char)->decltype(auto){//dowhateveryouwanthere

c++ - "Member is private"虽然我不从外部访问它,但在使用尾随返回类型时

如何解决以下问题?我正在编写一些函数库,它定义了以下与这个问题相关的函数:call(f,arg):调用带有参数的函数。只是我在某些情况下需要的包装器。comp(f1,f2):返回两个函数的组合。返回表示两个函数组合的辅助仿函数。实现如下所示(简化版本仍能说明问题)://Callfwithoneargumenttemplateautocall(constFn&f,constArg&arg)->decltype(f(arg)){returnf(arg);}//HelperfunctorforthefunctionbelowtemplateclassCompFn{Fn1a;Fn2b;publ